package org.jeecg.modules.task.service;

import org.jeecg.common.system.base.service.JeecgService;
import org.jeecg.modules.activity.entity.ConActivityApplyItem;
import org.jeecg.modules.content.entity.ConContentExtras;
import org.jeecg.modules.task.entity.TaskInfoBase;

import java.util.List;
import java.util.Map;

/**
 * @Description: 任务操作
 * @Author: wufanxin
 * @Date:  2021-07-01
 * @Version: V1.0
 */
public interface ITaskOperationService  {

    /**
     * 更新文章内容信息
     * @param taskInfoBase
     * @param textContentInfo
     */
    public void updateContentInfo(TaskInfoBase taskInfoBase,Map<String,Object> textContentInfo);

    /**
     * 更新活动内容信息
     * @param taskInfoBase
     * @param activityContentInfo
     */
    public void updateActivityInfo(TaskInfoBase taskInfoBase,Map<String,Object> activityContentInfo);


    /**
     * 根据taskno 查询任务信息
     * @param taskNo
     * @return
     */
    TaskInfoBase queryTaskInfoByTaskNo(String taskNo);

    /**
     * 处理联合撰稿人信息
     * @param taskNo
     * @param interviewDraft
     */
    void dealInterviewUnion(String taskNo,Map<String,Object> interviewDraft);

    /**
     * 处理文章附加信息
     * @param taskNo
     * @param contentExtrasList
     */
    void dealContentAddition(String taskNo,List<Map<String,Object>> contentExtrasList);
    /**
     * 处理活动附加信息
     * @param taskNo
     * @param applyList
     */
    void dealActivityAddition(String taskNo,List<Map<String,Object>> applyList);

    /**
     * 处理相关推荐信息
     * @param taskInfoBase
     * @param recommand
     */
    void dealRecommand(TaskInfoBase taskInfoBase,List<String> recommand);

    /**
     * 根据任务获取那些附加
     * @param taskNo
     * @return
     */
    List<ConContentExtras> queryContentAdditionByTask(String taskNo);

    /**
     * 根据任务获取相关推荐
     * @param taskNo
     * @return
     */
    List queryRecommandByTask(String taskNo);

    /**
     * 保存任务所有信息
     * @param requestMap
     */
    void saveTaskInfo(Map<String,Object> requestMap);
    String autoSaveTaskInfo(Map<String,Object> requestMap);

    /**
     * 保存发布信息
     * @param taskInfoBase
     * @param publish
     */
    void savePublish(TaskInfoBase taskInfoBase,Map<String,Object> publish);

    /**
     * 更新任务内容和活动状态为已完成待发布
     * @param taskNo
     */
    void updateTaskContentAndActivityRelease(String taskNo);

}
